In [1]:
import os
import pandas as pd
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
from tensorflow.keras.models import load_model, Model
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.applications.resnet50 import preprocess_input
import cv2
In [2]:
# Load the ResNet model
resnet_model = load_model('Final_InceptionV3_model.h5')
print(resnet_model.summary())


# Load the dataset CSV file
df = pd.read_csv("DataSet/HAM.csv")

# Add file extensions to image IDs
df['image_id'] = df['image_id'].apply(lambda x: x + ".jpg")

# Define image size and batch size
img_size = (200, 200)
batch_size = 16

# Create data generators for augmentation
datagen = ImageDataGenerator(
    rescale=1./255,
    rotation_range=20,
    width_shift_range=0.2,
    height_shift_range=0.2,
    horizontal_flip=True,
    zoom_range=0.2
)

# Sample 4 images from each class for testing
test_images = []
classes = df['dx'].unique()
for lesion_type in classes:
    sample_images = df[df['dx'] == lesion_type]['image_id'].sample(4, random_state=42)
    test_images.extend(sample_images)

# Define class names for target labels
class_names = {
    'akiec': 'Actinic Keratosis',
    'bcc': 'Basal Cell Carcinoma',
    'bkl': 'Benign Keratosis',
    'df': 'Dermatofibroma',
    'mel': 'Melanoma',
    'nv': 'Melanocytic Nevi',
    'vasc': 'Vascular Lesions'
}
Model: "model_2"
__________________________________________________________________________________________________
 Layer (type)                   Output Shape         Param #     Connected to                     
==================================================================================================
 input_7 (InputLayer)           [(None, 200, 200, 3  0           []                               
                                )]                                                                
                                                                                                  
 conv2d_568 (Conv2D)            (None, 99, 99, 32)   864         ['input_7[0][0]']                
                                                                                                  
 batch_normalization_567 (Batch  (None, 99, 99, 32)  96          ['conv2d_568[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_564 (Activation)    (None, 99, 99, 32)   0           ['batch_normalization_567[0][0]']
                                                                                                  
 conv2d_569 (Conv2D)            (None, 97, 97, 32)   9216        ['activation_564[0][0]']         
                                                                                                  
 batch_normalization_568 (Batch  (None, 97, 97, 32)  96          ['conv2d_569[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_565 (Activation)    (None, 97, 97, 32)   0           ['batch_normalization_568[0][0]']
                                                                                                  
 conv2d_570 (Conv2D)            (None, 97, 97, 64)   18432       ['activation_565[0][0]']         
                                                                                                  
 batch_normalization_569 (Batch  (None, 97, 97, 64)  192         ['conv2d_570[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_566 (Activation)    (None, 97, 97, 64)   0           ['batch_normalization_569[0][0]']
                                                                                                  
 max_pooling2d_24 (MaxPooling2D  (None, 48, 48, 64)  0           ['activation_566[0][0]']         
 )                                                                                                
                                                                                                  
 conv2d_571 (Conv2D)            (None, 48, 48, 80)   5120        ['max_pooling2d_24[0][0]']       
                                                                                                  
 batch_normalization_570 (Batch  (None, 48, 48, 80)  240         ['conv2d_571[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_567 (Activation)    (None, 48, 48, 80)   0           ['batch_normalization_570[0][0]']
                                                                                                  
 conv2d_572 (Conv2D)            (None, 46, 46, 192)  138240      ['activation_567[0][0]']         
                                                                                                  
 batch_normalization_571 (Batch  (None, 46, 46, 192)  576        ['conv2d_572[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_568 (Activation)    (None, 46, 46, 192)  0           ['batch_normalization_571[0][0]']
                                                                                                  
 max_pooling2d_25 (MaxPooling2D  (None, 22, 22, 192)  0          ['activation_568[0][0]']         
 )                                                                                                
                                                                                                  
 conv2d_576 (Conv2D)            (None, 22, 22, 64)   12288       ['max_pooling2d_25[0][0]']       
                                                                                                  
 batch_normalization_575 (Batch  (None, 22, 22, 64)  192         ['conv2d_576[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_572 (Activation)    (None, 22, 22, 64)   0           ['batch_normalization_575[0][0]']
                                                                                                  
 conv2d_574 (Conv2D)            (None, 22, 22, 48)   9216        ['max_pooling2d_25[0][0]']       
                                                                                                  
 conv2d_577 (Conv2D)            (None, 22, 22, 96)   55296       ['activation_572[0][0]']         
                                                                                                  
 batch_normalization_573 (Batch  (None, 22, 22, 48)  144         ['conv2d_574[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 batch_normalization_576 (Batch  (None, 22, 22, 96)  288         ['conv2d_577[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_570 (Activation)    (None, 22, 22, 48)   0           ['batch_normalization_573[0][0]']
                                                                                                  
 activation_573 (Activation)    (None, 22, 22, 96)   0           ['batch_normalization_576[0][0]']
                                                                                                  
 average_pooling2d_54 (AverageP  (None, 22, 22, 192)  0          ['max_pooling2d_25[0][0]']       
 ooling2D)                                                                                        
                                                                                                  
 conv2d_573 (Conv2D)            (None, 22, 22, 64)   12288       ['max_pooling2d_25[0][0]']       
                                                                                                  
 conv2d_575 (Conv2D)            (None, 22, 22, 64)   76800       ['activation_570[0][0]']         
                                                                                                  
 conv2d_578 (Conv2D)            (None, 22, 22, 96)   82944       ['activation_573[0][0]']         
                                                                                                  
 conv2d_579 (Conv2D)            (None, 22, 22, 32)   6144        ['average_pooling2d_54[0][0]']   
                                                                                                  
 batch_normalization_572 (Batch  (None, 22, 22, 64)  192         ['conv2d_573[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 batch_normalization_574 (Batch  (None, 22, 22, 64)  192         ['conv2d_575[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 batch_normalization_577 (Batch  (None, 22, 22, 96)  288         ['conv2d_578[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 batch_normalization_578 (Batch  (None, 22, 22, 32)  96          ['conv2d_579[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_569 (Activation)    (None, 22, 22, 64)   0           ['batch_normalization_572[0][0]']
                                                                                                  
 activation_571 (Activation)    (None, 22, 22, 64)   0           ['batch_normalization_574[0][0]']
                                                                                                  
 activation_574 (Activation)    (None, 22, 22, 96)   0           ['batch_normalization_577[0][0]']
                                                                                                  
 activation_575 (Activation)    (None, 22, 22, 32)   0           ['batch_normalization_578[0][0]']
                                                                                                  
 mixed0 (Concatenate)           (None, 22, 22, 256)  0           ['activation_569[0][0]',         
                                                                  'activation_571[0][0]',         
                                                                  'activation_574[0][0]',         
                                                                  'activation_575[0][0]']         
                                                                                                  
 conv2d_583 (Conv2D)            (None, 22, 22, 64)   16384       ['mixed0[0][0]']                 
                                                                                                  
 batch_normalization_582 (Batch  (None, 22, 22, 64)  192         ['conv2d_583[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_579 (Activation)    (None, 22, 22, 64)   0           ['batch_normalization_582[0][0]']
                                                                                                  
 conv2d_581 (Conv2D)            (None, 22, 22, 48)   12288       ['mixed0[0][0]']                 
                                                                                                  
 conv2d_584 (Conv2D)            (None, 22, 22, 96)   55296       ['activation_579[0][0]']         
                                                                                                  
 batch_normalization_580 (Batch  (None, 22, 22, 48)  144         ['conv2d_581[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 batch_normalization_583 (Batch  (None, 22, 22, 96)  288         ['conv2d_584[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_577 (Activation)    (None, 22, 22, 48)   0           ['batch_normalization_580[0][0]']
                                                                                                  
 activation_580 (Activation)    (None, 22, 22, 96)   0           ['batch_normalization_583[0][0]']
                                                                                                  
 average_pooling2d_55 (AverageP  (None, 22, 22, 256)  0          ['mixed0[0][0]']                 
 ooling2D)                                                                                        
                                                                                                  
 conv2d_580 (Conv2D)            (None, 22, 22, 64)   16384       ['mixed0[0][0]']                 
                                                                                                  
 conv2d_582 (Conv2D)            (None, 22, 22, 64)   76800       ['activation_577[0][0]']         
                                                                                                  
 conv2d_585 (Conv2D)            (None, 22, 22, 96)   82944       ['activation_580[0][0]']         
                                                                                                  
 conv2d_586 (Conv2D)            (None, 22, 22, 64)   16384       ['average_pooling2d_55[0][0]']   
                                                                                                  
 batch_normalization_579 (Batch  (None, 22, 22, 64)  192         ['conv2d_580[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 batch_normalization_581 (Batch  (None, 22, 22, 64)  192         ['conv2d_582[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 batch_normalization_584 (Batch  (None, 22, 22, 96)  288         ['conv2d_585[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 batch_normalization_585 (Batch  (None, 22, 22, 64)  192         ['conv2d_586[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_576 (Activation)    (None, 22, 22, 64)   0           ['batch_normalization_579[0][0]']
                                                                                                  
 activation_578 (Activation)    (None, 22, 22, 64)   0           ['batch_normalization_581[0][0]']
                                                                                                  
 activation_581 (Activation)    (None, 22, 22, 96)   0           ['batch_normalization_584[0][0]']
                                                                                                  
 activation_582 (Activation)    (None, 22, 22, 64)   0           ['batch_normalization_585[0][0]']
                                                                                                  
 mixed1 (Concatenate)           (None, 22, 22, 288)  0           ['activation_576[0][0]',         
                                                                  'activation_578[0][0]',         
                                                                  'activation_581[0][0]',         
                                                                  'activation_582[0][0]']         
                                                                                                  
 conv2d_590 (Conv2D)            (None, 22, 22, 64)   18432       ['mixed1[0][0]']                 
                                                                                                  
 batch_normalization_589 (Batch  (None, 22, 22, 64)  192         ['conv2d_590[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_586 (Activation)    (None, 22, 22, 64)   0           ['batch_normalization_589[0][0]']
                                                                                                  
 conv2d_588 (Conv2D)            (None, 22, 22, 48)   13824       ['mixed1[0][0]']                 
                                                                                                  
 conv2d_591 (Conv2D)            (None, 22, 22, 96)   55296       ['activation_586[0][0]']         
                                                                                                  
 batch_normalization_587 (Batch  (None, 22, 22, 48)  144         ['conv2d_588[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 batch_normalization_590 (Batch  (None, 22, 22, 96)  288         ['conv2d_591[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_584 (Activation)    (None, 22, 22, 48)   0           ['batch_normalization_587[0][0]']
                                                                                                  
 activation_587 (Activation)    (None, 22, 22, 96)   0           ['batch_normalization_590[0][0]']
                                                                                                  
 average_pooling2d_56 (AverageP  (None, 22, 22, 288)  0          ['mixed1[0][0]']                 
 ooling2D)                                                                                        
                                                                                                  
 conv2d_587 (Conv2D)            (None, 22, 22, 64)   18432       ['mixed1[0][0]']                 
                                                                                                  
 conv2d_589 (Conv2D)            (None, 22, 22, 64)   76800       ['activation_584[0][0]']         
                                                                                                  
 conv2d_592 (Conv2D)            (None, 22, 22, 96)   82944       ['activation_587[0][0]']         
                                                                                                  
 conv2d_593 (Conv2D)            (None, 22, 22, 64)   18432       ['average_pooling2d_56[0][0]']   
                                                                                                  
 batch_normalization_586 (Batch  (None, 22, 22, 64)  192         ['conv2d_587[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 batch_normalization_588 (Batch  (None, 22, 22, 64)  192         ['conv2d_589[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 batch_normalization_591 (Batch  (None, 22, 22, 96)  288         ['conv2d_592[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 batch_normalization_592 (Batch  (None, 22, 22, 64)  192         ['conv2d_593[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_583 (Activation)    (None, 22, 22, 64)   0           ['batch_normalization_586[0][0]']
                                                                                                  
 activation_585 (Activation)    (None, 22, 22, 64)   0           ['batch_normalization_588[0][0]']
                                                                                                  
 activation_588 (Activation)    (None, 22, 22, 96)   0           ['batch_normalization_591[0][0]']
                                                                                                  
 activation_589 (Activation)    (None, 22, 22, 64)   0           ['batch_normalization_592[0][0]']
                                                                                                  
 mixed2 (Concatenate)           (None, 22, 22, 288)  0           ['activation_583[0][0]',         
                                                                  'activation_585[0][0]',         
                                                                  'activation_588[0][0]',         
                                                                  'activation_589[0][0]']         
                                                                                                  
 conv2d_595 (Conv2D)            (None, 22, 22, 64)   18432       ['mixed2[0][0]']                 
                                                                                                  
 batch_normalization_594 (Batch  (None, 22, 22, 64)  192         ['conv2d_595[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_591 (Activation)    (None, 22, 22, 64)   0           ['batch_normalization_594[0][0]']
                                                                                                  
 conv2d_596 (Conv2D)            (None, 22, 22, 96)   55296       ['activation_591[0][0]']         
                                                                                                  
 batch_normalization_595 (Batch  (None, 22, 22, 96)  288         ['conv2d_596[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_592 (Activation)    (None, 22, 22, 96)   0           ['batch_normalization_595[0][0]']
                                                                                                  
 conv2d_594 (Conv2D)            (None, 10, 10, 384)  995328      ['mixed2[0][0]']                 
                                                                                                  
 conv2d_597 (Conv2D)            (None, 10, 10, 96)   82944       ['activation_592[0][0]']         
                                                                                                  
 batch_normalization_593 (Batch  (None, 10, 10, 384)  1152       ['conv2d_594[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 batch_normalization_596 (Batch  (None, 10, 10, 96)  288         ['conv2d_597[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_590 (Activation)    (None, 10, 10, 384)  0           ['batch_normalization_593[0][0]']
                                                                                                  
 activation_593 (Activation)    (None, 10, 10, 96)   0           ['batch_normalization_596[0][0]']
                                                                                                  
 max_pooling2d_26 (MaxPooling2D  (None, 10, 10, 288)  0          ['mixed2[0][0]']                 
 )                                                                                                
                                                                                                  
 mixed3 (Concatenate)           (None, 10, 10, 768)  0           ['activation_590[0][0]',         
                                                                  'activation_593[0][0]',         
                                                                  'max_pooling2d_26[0][0]']       
                                                                                                  
 conv2d_602 (Conv2D)            (None, 10, 10, 128)  98304       ['mixed3[0][0]']                 
                                                                                                  
 batch_normalization_601 (Batch  (None, 10, 10, 128)  384        ['conv2d_602[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_598 (Activation)    (None, 10, 10, 128)  0           ['batch_normalization_601[0][0]']
                                                                                                  
 conv2d_603 (Conv2D)            (None, 10, 10, 128)  114688      ['activation_598[0][0]']         
                                                                                                  
 batch_normalization_602 (Batch  (None, 10, 10, 128)  384        ['conv2d_603[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_599 (Activation)    (None, 10, 10, 128)  0           ['batch_normalization_602[0][0]']
                                                                                                  
 conv2d_599 (Conv2D)            (None, 10, 10, 128)  98304       ['mixed3[0][0]']                 
                                                                                                  
 conv2d_604 (Conv2D)            (None, 10, 10, 128)  114688      ['activation_599[0][0]']         
                                                                                                  
 batch_normalization_598 (Batch  (None, 10, 10, 128)  384        ['conv2d_599[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 batch_normalization_603 (Batch  (None, 10, 10, 128)  384        ['conv2d_604[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_595 (Activation)    (None, 10, 10, 128)  0           ['batch_normalization_598[0][0]']
                                                                                                  
 activation_600 (Activation)    (None, 10, 10, 128)  0           ['batch_normalization_603[0][0]']
                                                                                                  
 conv2d_600 (Conv2D)            (None, 10, 10, 128)  114688      ['activation_595[0][0]']         
                                                                                                  
 conv2d_605 (Conv2D)            (None, 10, 10, 128)  114688      ['activation_600[0][0]']         
                                                                                                  
 batch_normalization_599 (Batch  (None, 10, 10, 128)  384        ['conv2d_600[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 batch_normalization_604 (Batch  (None, 10, 10, 128)  384        ['conv2d_605[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_596 (Activation)    (None, 10, 10, 128)  0           ['batch_normalization_599[0][0]']
                                                                                                  
 activation_601 (Activation)    (None, 10, 10, 128)  0           ['batch_normalization_604[0][0]']
                                                                                                  
 average_pooling2d_57 (AverageP  (None, 10, 10, 768)  0          ['mixed3[0][0]']                 
 ooling2D)                                                                                        
                                                                                                  
 conv2d_598 (Conv2D)            (None, 10, 10, 192)  147456      ['mixed3[0][0]']                 
                                                                                                  
 conv2d_601 (Conv2D)            (None, 10, 10, 192)  172032      ['activation_596[0][0]']         
                                                                                                  
 conv2d_606 (Conv2D)            (None, 10, 10, 192)  172032      ['activation_601[0][0]']         
                                                                                                  
 conv2d_607 (Conv2D)            (None, 10, 10, 192)  147456      ['average_pooling2d_57[0][0]']   
                                                                                                  
 batch_normalization_597 (Batch  (None, 10, 10, 192)  576        ['conv2d_598[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 batch_normalization_600 (Batch  (None, 10, 10, 192)  576        ['conv2d_601[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 batch_normalization_605 (Batch  (None, 10, 10, 192)  576        ['conv2d_606[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 batch_normalization_606 (Batch  (None, 10, 10, 192)  576        ['conv2d_607[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_594 (Activation)    (None, 10, 10, 192)  0           ['batch_normalization_597[0][0]']
                                                                                                  
 activation_597 (Activation)    (None, 10, 10, 192)  0           ['batch_normalization_600[0][0]']
                                                                                                  
 activation_602 (Activation)    (None, 10, 10, 192)  0           ['batch_normalization_605[0][0]']
                                                                                                  
 activation_603 (Activation)    (None, 10, 10, 192)  0           ['batch_normalization_606[0][0]']
                                                                                                  
 mixed4 (Concatenate)           (None, 10, 10, 768)  0           ['activation_594[0][0]',         
                                                                  'activation_597[0][0]',         
                                                                  'activation_602[0][0]',         
                                                                  'activation_603[0][0]']         
                                                                                                  
 conv2d_612 (Conv2D)            (None, 10, 10, 160)  122880      ['mixed4[0][0]']                 
                                                                                                  
 batch_normalization_611 (Batch  (None, 10, 10, 160)  480        ['conv2d_612[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_608 (Activation)    (None, 10, 10, 160)  0           ['batch_normalization_611[0][0]']
                                                                                                  
 conv2d_613 (Conv2D)            (None, 10, 10, 160)  179200      ['activation_608[0][0]']         
                                                                                                  
 batch_normalization_612 (Batch  (None, 10, 10, 160)  480        ['conv2d_613[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_609 (Activation)    (None, 10, 10, 160)  0           ['batch_normalization_612[0][0]']
                                                                                                  
 conv2d_609 (Conv2D)            (None, 10, 10, 160)  122880      ['mixed4[0][0]']                 
                                                                                                  
 conv2d_614 (Conv2D)            (None, 10, 10, 160)  179200      ['activation_609[0][0]']         
                                                                                                  
 batch_normalization_608 (Batch  (None, 10, 10, 160)  480        ['conv2d_609[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 batch_normalization_613 (Batch  (None, 10, 10, 160)  480        ['conv2d_614[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_605 (Activation)    (None, 10, 10, 160)  0           ['batch_normalization_608[0][0]']
                                                                                                  
 activation_610 (Activation)    (None, 10, 10, 160)  0           ['batch_normalization_613[0][0]']
                                                                                                  
 conv2d_610 (Conv2D)            (None, 10, 10, 160)  179200      ['activation_605[0][0]']         
                                                                                                  
 conv2d_615 (Conv2D)            (None, 10, 10, 160)  179200      ['activation_610[0][0]']         
                                                                                                  
 batch_normalization_609 (Batch  (None, 10, 10, 160)  480        ['conv2d_610[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 batch_normalization_614 (Batch  (None, 10, 10, 160)  480        ['conv2d_615[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_606 (Activation)    (None, 10, 10, 160)  0           ['batch_normalization_609[0][0]']
                                                                                                  
 activation_611 (Activation)    (None, 10, 10, 160)  0           ['batch_normalization_614[0][0]']
                                                                                                  
 average_pooling2d_58 (AverageP  (None, 10, 10, 768)  0          ['mixed4[0][0]']                 
 ooling2D)                                                                                        
                                                                                                  
 conv2d_608 (Conv2D)            (None, 10, 10, 192)  147456      ['mixed4[0][0]']                 
                                                                                                  
 conv2d_611 (Conv2D)            (None, 10, 10, 192)  215040      ['activation_606[0][0]']         
                                                                                                  
 conv2d_616 (Conv2D)            (None, 10, 10, 192)  215040      ['activation_611[0][0]']         
                                                                                                  
 conv2d_617 (Conv2D)            (None, 10, 10, 192)  147456      ['average_pooling2d_58[0][0]']   
                                                                                                  
 batch_normalization_607 (Batch  (None, 10, 10, 192)  576        ['conv2d_608[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 batch_normalization_610 (Batch  (None, 10, 10, 192)  576        ['conv2d_611[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 batch_normalization_615 (Batch  (None, 10, 10, 192)  576        ['conv2d_616[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 batch_normalization_616 (Batch  (None, 10, 10, 192)  576        ['conv2d_617[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_604 (Activation)    (None, 10, 10, 192)  0           ['batch_normalization_607[0][0]']
                                                                                                  
 activation_607 (Activation)    (None, 10, 10, 192)  0           ['batch_normalization_610[0][0]']
                                                                                                  
 activation_612 (Activation)    (None, 10, 10, 192)  0           ['batch_normalization_615[0][0]']
                                                                                                  
 activation_613 (Activation)    (None, 10, 10, 192)  0           ['batch_normalization_616[0][0]']
                                                                                                  
 mixed5 (Concatenate)           (None, 10, 10, 768)  0           ['activation_604[0][0]',         
                                                                  'activation_607[0][0]',         
                                                                  'activation_612[0][0]',         
                                                                  'activation_613[0][0]']         
                                                                                                  
 conv2d_622 (Conv2D)            (None, 10, 10, 160)  122880      ['mixed5[0][0]']                 
                                                                                                  
 batch_normalization_621 (Batch  (None, 10, 10, 160)  480        ['conv2d_622[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_618 (Activation)    (None, 10, 10, 160)  0           ['batch_normalization_621[0][0]']
                                                                                                  
 conv2d_623 (Conv2D)            (None, 10, 10, 160)  179200      ['activation_618[0][0]']         
                                                                                                  
 batch_normalization_622 (Batch  (None, 10, 10, 160)  480        ['conv2d_623[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_619 (Activation)    (None, 10, 10, 160)  0           ['batch_normalization_622[0][0]']
                                                                                                  
 conv2d_619 (Conv2D)            (None, 10, 10, 160)  122880      ['mixed5[0][0]']                 
                                                                                                  
 conv2d_624 (Conv2D)            (None, 10, 10, 160)  179200      ['activation_619[0][0]']         
                                                                                                  
 batch_normalization_618 (Batch  (None, 10, 10, 160)  480        ['conv2d_619[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 batch_normalization_623 (Batch  (None, 10, 10, 160)  480        ['conv2d_624[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_615 (Activation)    (None, 10, 10, 160)  0           ['batch_normalization_618[0][0]']
                                                                                                  
 activation_620 (Activation)    (None, 10, 10, 160)  0           ['batch_normalization_623[0][0]']
                                                                                                  
 conv2d_620 (Conv2D)            (None, 10, 10, 160)  179200      ['activation_615[0][0]']         
                                                                                                  
 conv2d_625 (Conv2D)            (None, 10, 10, 160)  179200      ['activation_620[0][0]']         
                                                                                                  
 batch_normalization_619 (Batch  (None, 10, 10, 160)  480        ['conv2d_620[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 batch_normalization_624 (Batch  (None, 10, 10, 160)  480        ['conv2d_625[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_616 (Activation)    (None, 10, 10, 160)  0           ['batch_normalization_619[0][0]']
                                                                                                  
 activation_621 (Activation)    (None, 10, 10, 160)  0           ['batch_normalization_624[0][0]']
                                                                                                  
 average_pooling2d_59 (AverageP  (None, 10, 10, 768)  0          ['mixed5[0][0]']                 
 ooling2D)                                                                                        
                                                                                                  
 conv2d_618 (Conv2D)            (None, 10, 10, 192)  147456      ['mixed5[0][0]']                 
                                                                                                  
 conv2d_621 (Conv2D)            (None, 10, 10, 192)  215040      ['activation_616[0][0]']         
                                                                                                  
 conv2d_626 (Conv2D)            (None, 10, 10, 192)  215040      ['activation_621[0][0]']         
                                                                                                  
 conv2d_627 (Conv2D)            (None, 10, 10, 192)  147456      ['average_pooling2d_59[0][0]']   
                                                                                                  
 batch_normalization_617 (Batch  (None, 10, 10, 192)  576        ['conv2d_618[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 batch_normalization_620 (Batch  (None, 10, 10, 192)  576        ['conv2d_621[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 batch_normalization_625 (Batch  (None, 10, 10, 192)  576        ['conv2d_626[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 batch_normalization_626 (Batch  (None, 10, 10, 192)  576        ['conv2d_627[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_614 (Activation)    (None, 10, 10, 192)  0           ['batch_normalization_617[0][0]']
                                                                                                  
 activation_617 (Activation)    (None, 10, 10, 192)  0           ['batch_normalization_620[0][0]']
                                                                                                  
 activation_622 (Activation)    (None, 10, 10, 192)  0           ['batch_normalization_625[0][0]']
                                                                                                  
 activation_623 (Activation)    (None, 10, 10, 192)  0           ['batch_normalization_626[0][0]']
                                                                                                  
 mixed6 (Concatenate)           (None, 10, 10, 768)  0           ['activation_614[0][0]',         
                                                                  'activation_617[0][0]',         
                                                                  'activation_622[0][0]',         
                                                                  'activation_623[0][0]']         
                                                                                                  
 conv2d_632 (Conv2D)            (None, 10, 10, 192)  147456      ['mixed6[0][0]']                 
                                                                                                  
 batch_normalization_631 (Batch  (None, 10, 10, 192)  576        ['conv2d_632[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_628 (Activation)    (None, 10, 10, 192)  0           ['batch_normalization_631[0][0]']
                                                                                                  
 conv2d_633 (Conv2D)            (None, 10, 10, 192)  258048      ['activation_628[0][0]']         
                                                                                                  
 batch_normalization_632 (Batch  (None, 10, 10, 192)  576        ['conv2d_633[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_629 (Activation)    (None, 10, 10, 192)  0           ['batch_normalization_632[0][0]']
                                                                                                  
 conv2d_629 (Conv2D)            (None, 10, 10, 192)  147456      ['mixed6[0][0]']                 
                                                                                                  
 conv2d_634 (Conv2D)            (None, 10, 10, 192)  258048      ['activation_629[0][0]']         
                                                                                                  
 batch_normalization_628 (Batch  (None, 10, 10, 192)  576        ['conv2d_629[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 batch_normalization_633 (Batch  (None, 10, 10, 192)  576        ['conv2d_634[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_625 (Activation)    (None, 10, 10, 192)  0           ['batch_normalization_628[0][0]']
                                                                                                  
 activation_630 (Activation)    (None, 10, 10, 192)  0           ['batch_normalization_633[0][0]']
                                                                                                  
 conv2d_630 (Conv2D)            (None, 10, 10, 192)  258048      ['activation_625[0][0]']         
                                                                                                  
 conv2d_635 (Conv2D)            (None, 10, 10, 192)  258048      ['activation_630[0][0]']         
                                                                                                  
 batch_normalization_629 (Batch  (None, 10, 10, 192)  576        ['conv2d_630[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 batch_normalization_634 (Batch  (None, 10, 10, 192)  576        ['conv2d_635[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_626 (Activation)    (None, 10, 10, 192)  0           ['batch_normalization_629[0][0]']
                                                                                                  
 activation_631 (Activation)    (None, 10, 10, 192)  0           ['batch_normalization_634[0][0]']
                                                                                                  
 average_pooling2d_60 (AverageP  (None, 10, 10, 768)  0          ['mixed6[0][0]']                 
 ooling2D)                                                                                        
                                                                                                  
 conv2d_628 (Conv2D)            (None, 10, 10, 192)  147456      ['mixed6[0][0]']                 
                                                                                                  
 conv2d_631 (Conv2D)            (None, 10, 10, 192)  258048      ['activation_626[0][0]']         
                                                                                                  
 conv2d_636 (Conv2D)            (None, 10, 10, 192)  258048      ['activation_631[0][0]']         
                                                                                                  
 conv2d_637 (Conv2D)            (None, 10, 10, 192)  147456      ['average_pooling2d_60[0][0]']   
                                                                                                  
 batch_normalization_627 (Batch  (None, 10, 10, 192)  576        ['conv2d_628[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 batch_normalization_630 (Batch  (None, 10, 10, 192)  576        ['conv2d_631[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 batch_normalization_635 (Batch  (None, 10, 10, 192)  576        ['conv2d_636[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 batch_normalization_636 (Batch  (None, 10, 10, 192)  576        ['conv2d_637[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_624 (Activation)    (None, 10, 10, 192)  0           ['batch_normalization_627[0][0]']
                                                                                                  
 activation_627 (Activation)    (None, 10, 10, 192)  0           ['batch_normalization_630[0][0]']
                                                                                                  
 activation_632 (Activation)    (None, 10, 10, 192)  0           ['batch_normalization_635[0][0]']
                                                                                                  
 activation_633 (Activation)    (None, 10, 10, 192)  0           ['batch_normalization_636[0][0]']
                                                                                                  
 mixed7 (Concatenate)           (None, 10, 10, 768)  0           ['activation_624[0][0]',         
                                                                  'activation_627[0][0]',         
                                                                  'activation_632[0][0]',         
                                                                  'activation_633[0][0]']         
                                                                                                  
 conv2d_640 (Conv2D)            (None, 10, 10, 192)  147456      ['mixed7[0][0]']                 
                                                                                                  
 batch_normalization_639 (Batch  (None, 10, 10, 192)  576        ['conv2d_640[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_636 (Activation)    (None, 10, 10, 192)  0           ['batch_normalization_639[0][0]']
                                                                                                  
 conv2d_641 (Conv2D)            (None, 10, 10, 192)  258048      ['activation_636[0][0]']         
                                                                                                  
 batch_normalization_640 (Batch  (None, 10, 10, 192)  576        ['conv2d_641[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_637 (Activation)    (None, 10, 10, 192)  0           ['batch_normalization_640[0][0]']
                                                                                                  
 conv2d_638 (Conv2D)            (None, 10, 10, 192)  147456      ['mixed7[0][0]']                 
                                                                                                  
 conv2d_642 (Conv2D)            (None, 10, 10, 192)  258048      ['activation_637[0][0]']         
                                                                                                  
 batch_normalization_637 (Batch  (None, 10, 10, 192)  576        ['conv2d_638[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 batch_normalization_641 (Batch  (None, 10, 10, 192)  576        ['conv2d_642[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_634 (Activation)    (None, 10, 10, 192)  0           ['batch_normalization_637[0][0]']
                                                                                                  
 activation_638 (Activation)    (None, 10, 10, 192)  0           ['batch_normalization_641[0][0]']
                                                                                                  
 conv2d_639 (Conv2D)            (None, 4, 4, 320)    552960      ['activation_634[0][0]']         
                                                                                                  
 conv2d_643 (Conv2D)            (None, 4, 4, 192)    331776      ['activation_638[0][0]']         
                                                                                                  
 batch_normalization_638 (Batch  (None, 4, 4, 320)   960         ['conv2d_639[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 batch_normalization_642 (Batch  (None, 4, 4, 192)   576         ['conv2d_643[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_635 (Activation)    (None, 4, 4, 320)    0           ['batch_normalization_638[0][0]']
                                                                                                  
 activation_639 (Activation)    (None, 4, 4, 192)    0           ['batch_normalization_642[0][0]']
                                                                                                  
 max_pooling2d_27 (MaxPooling2D  (None, 4, 4, 768)   0           ['mixed7[0][0]']                 
 )                                                                                                
                                                                                                  
 mixed8 (Concatenate)           (None, 4, 4, 1280)   0           ['activation_635[0][0]',         
                                                                  'activation_639[0][0]',         
                                                                  'max_pooling2d_27[0][0]']       
                                                                                                  
 conv2d_648 (Conv2D)            (None, 4, 4, 448)    573440      ['mixed8[0][0]']                 
                                                                                                  
 batch_normalization_647 (Batch  (None, 4, 4, 448)   1344        ['conv2d_648[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_644 (Activation)    (None, 4, 4, 448)    0           ['batch_normalization_647[0][0]']
                                                                                                  
 conv2d_645 (Conv2D)            (None, 4, 4, 384)    491520      ['mixed8[0][0]']                 
                                                                                                  
 conv2d_649 (Conv2D)            (None, 4, 4, 384)    1548288     ['activation_644[0][0]']         
                                                                                                  
 batch_normalization_644 (Batch  (None, 4, 4, 384)   1152        ['conv2d_645[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 batch_normalization_648 (Batch  (None, 4, 4, 384)   1152        ['conv2d_649[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_641 (Activation)    (None, 4, 4, 384)    0           ['batch_normalization_644[0][0]']
                                                                                                  
 activation_645 (Activation)    (None, 4, 4, 384)    0           ['batch_normalization_648[0][0]']
                                                                                                  
 conv2d_646 (Conv2D)            (None, 4, 4, 384)    442368      ['activation_641[0][0]']         
                                                                                                  
 conv2d_647 (Conv2D)            (None, 4, 4, 384)    442368      ['activation_641[0][0]']         
                                                                                                  
 conv2d_650 (Conv2D)            (None, 4, 4, 384)    442368      ['activation_645[0][0]']         
                                                                                                  
 conv2d_651 (Conv2D)            (None, 4, 4, 384)    442368      ['activation_645[0][0]']         
                                                                                                  
 average_pooling2d_61 (AverageP  (None, 4, 4, 1280)  0           ['mixed8[0][0]']                 
 ooling2D)                                                                                        
                                                                                                  
 conv2d_644 (Conv2D)            (None, 4, 4, 320)    409600      ['mixed8[0][0]']                 
                                                                                                  
 batch_normalization_645 (Batch  (None, 4, 4, 384)   1152        ['conv2d_646[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 batch_normalization_646 (Batch  (None, 4, 4, 384)   1152        ['conv2d_647[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 batch_normalization_649 (Batch  (None, 4, 4, 384)   1152        ['conv2d_650[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 batch_normalization_650 (Batch  (None, 4, 4, 384)   1152        ['conv2d_651[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 conv2d_652 (Conv2D)            (None, 4, 4, 192)    245760      ['average_pooling2d_61[0][0]']   
                                                                                                  
 batch_normalization_643 (Batch  (None, 4, 4, 320)   960         ['conv2d_644[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_642 (Activation)    (None, 4, 4, 384)    0           ['batch_normalization_645[0][0]']
                                                                                                  
 activation_643 (Activation)    (None, 4, 4, 384)    0           ['batch_normalization_646[0][0]']
                                                                                                  
 activation_646 (Activation)    (None, 4, 4, 384)    0           ['batch_normalization_649[0][0]']
                                                                                                  
 activation_647 (Activation)    (None, 4, 4, 384)    0           ['batch_normalization_650[0][0]']
                                                                                                  
 batch_normalization_651 (Batch  (None, 4, 4, 192)   576         ['conv2d_652[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_640 (Activation)    (None, 4, 4, 320)    0           ['batch_normalization_643[0][0]']
                                                                                                  
 mixed9_0 (Concatenate)         (None, 4, 4, 768)    0           ['activation_642[0][0]',         
                                                                  'activation_643[0][0]']         
                                                                                                  
 concatenate_12 (Concatenate)   (None, 4, 4, 768)    0           ['activation_646[0][0]',         
                                                                  'activation_647[0][0]']         
                                                                                                  
 activation_648 (Activation)    (None, 4, 4, 192)    0           ['batch_normalization_651[0][0]']
                                                                                                  
 mixed9 (Concatenate)           (None, 4, 4, 2048)   0           ['activation_640[0][0]',         
                                                                  'mixed9_0[0][0]',               
                                                                  'concatenate_12[0][0]',         
                                                                  'activation_648[0][0]']         
                                                                                                  
 conv2d_657 (Conv2D)            (None, 4, 4, 448)    917504      ['mixed9[0][0]']                 
                                                                                                  
 batch_normalization_656 (Batch  (None, 4, 4, 448)   1344        ['conv2d_657[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_653 (Activation)    (None, 4, 4, 448)    0           ['batch_normalization_656[0][0]']
                                                                                                  
 conv2d_654 (Conv2D)            (None, 4, 4, 384)    786432      ['mixed9[0][0]']                 
                                                                                                  
 conv2d_658 (Conv2D)            (None, 4, 4, 384)    1548288     ['activation_653[0][0]']         
                                                                                                  
 batch_normalization_653 (Batch  (None, 4, 4, 384)   1152        ['conv2d_654[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 batch_normalization_657 (Batch  (None, 4, 4, 384)   1152        ['conv2d_658[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_650 (Activation)    (None, 4, 4, 384)    0           ['batch_normalization_653[0][0]']
                                                                                                  
 activation_654 (Activation)    (None, 4, 4, 384)    0           ['batch_normalization_657[0][0]']
                                                                                                  
 conv2d_655 (Conv2D)            (None, 4, 4, 384)    442368      ['activation_650[0][0]']         
                                                                                                  
 conv2d_656 (Conv2D)            (None, 4, 4, 384)    442368      ['activation_650[0][0]']         
                                                                                                  
 conv2d_659 (Conv2D)            (None, 4, 4, 384)    442368      ['activation_654[0][0]']         
                                                                                                  
 conv2d_660 (Conv2D)            (None, 4, 4, 384)    442368      ['activation_654[0][0]']         
                                                                                                  
 average_pooling2d_62 (AverageP  (None, 4, 4, 2048)  0           ['mixed9[0][0]']                 
 ooling2D)                                                                                        
                                                                                                  
 conv2d_653 (Conv2D)            (None, 4, 4, 320)    655360      ['mixed9[0][0]']                 
                                                                                                  
 batch_normalization_654 (Batch  (None, 4, 4, 384)   1152        ['conv2d_655[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 batch_normalization_655 (Batch  (None, 4, 4, 384)   1152        ['conv2d_656[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 batch_normalization_658 (Batch  (None, 4, 4, 384)   1152        ['conv2d_659[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 batch_normalization_659 (Batch  (None, 4, 4, 384)   1152        ['conv2d_660[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 conv2d_661 (Conv2D)            (None, 4, 4, 192)    393216      ['average_pooling2d_62[0][0]']   
                                                                                                  
 batch_normalization_652 (Batch  (None, 4, 4, 320)   960         ['conv2d_653[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_651 (Activation)    (None, 4, 4, 384)    0           ['batch_normalization_654[0][0]']
                                                                                                  
 activation_652 (Activation)    (None, 4, 4, 384)    0           ['batch_normalization_655[0][0]']
                                                                                                  
 activation_655 (Activation)    (None, 4, 4, 384)    0           ['batch_normalization_658[0][0]']
                                                                                                  
 activation_656 (Activation)    (None, 4, 4, 384)    0           ['batch_normalization_659[0][0]']
                                                                                                  
 batch_normalization_660 (Batch  (None, 4, 4, 192)   576         ['conv2d_661[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 activation_649 (Activation)    (None, 4, 4, 320)    0           ['batch_normalization_652[0][0]']
                                                                                                  
 mixed9_1 (Concatenate)         (None, 4, 4, 768)    0           ['activation_651[0][0]',         
                                                                  'activation_652[0][0]']         
                                                                                                  
 concatenate_13 (Concatenate)   (None, 4, 4, 768)    0           ['activation_655[0][0]',         
                                                                  'activation_656[0][0]']         
                                                                                                  
 activation_657 (Activation)    (None, 4, 4, 192)    0           ['batch_normalization_660[0][0]']
                                                                                                  
 mixed10 (Concatenate)          (None, 4, 4, 2048)   0           ['activation_649[0][0]',         
                                                                  'mixed9_1[0][0]',               
                                                                  'concatenate_13[0][0]',         
                                                                  'activation_657[0][0]']         
                                                                                                  
 conv2d_662 (Conv2D)            (None, 2, 2, 128)    2359424     ['mixed10[0][0]']                
                                                                                                  
 batch_normalization_661 (Batch  (None, 2, 2, 128)   512         ['conv2d_662[0][0]']             
 Normalization)                                                                                   
                                                                                                  
 global_average_pooling2d_3 (Gl  (None, 128)         0           ['batch_normalization_661[0][0]']
 obalAveragePooling2D)                                                                            
                                                                                                  
 dropout_6 (Dropout)            (None, 128)          0           ['global_average_pooling2d_3[0][0
                                                                 ]']                              
                                                                                                  
 dense_6 (Dense)                (None, 1024)         132096      ['dropout_6[0][0]']              
                                                                                                  
 dropout_7 (Dropout)            (None, 1024)         0           ['dense_6[0][0]']                
                                                                                                  
 dense_7 (Dense)                (None, 256)          262400      ['dropout_7[0][0]']              
                                                                                                  
 dropout_8 (Dropout)            (None, 256)          0           ['dense_7[0][0]']                
                                                                                                  
 dense_8 (Dense)                (None, 7)            1799        ['dropout_8[0][0]']              
                                                                                                  
==================================================================================================
Total params: 24,559,015
Trainable params: 24,524,327
Non-trainable params: 34,688
__________________________________________________________________________________________________
None
In [3]:
# Define the GradCAM function
from tensorflow.keras import backend as K

def mse_loss(y_true, y_pred, loss_function=None):
    return tf.reduce_mean(tf.square(y_true - y_pred))

def gradcam(img, model, layer_name):
    # Expand the dimensions of the input image to represent the batch size
    img = tf.expand_dims(img, axis=0)
    
    # Retrieve the output of the specified layer for the input image
    last_conv_layer_output = model.get_layer(layer_name).output
    
    # Define a function to compute the gradient of the predicted class with respect to the activations of the last convolutional layer
    grad_model = Model([model.inputs], [model.output, last_conv_layer_output])
    
    with tf.GradientTape() as tape:
        preds, last_conv_layer_output = grad_model(img)
        class_output = preds[:, np.argmax(preds[0])]
        
    # Compute the gradients of the class output with respect to the activations of the last convolutional layer
    grads = tape.gradient(class_output, last_conv_layer_output)
    
    # Compute the vector of weights as the global average pooling of the gradients
    pooled_grads = tf.reduce_mean(grads, axis=(0, 1, 2))
    
    # Compute the weighted combination of the activations of the last convolutional layer
    last_conv_layer_output = last_conv_layer_output[0]
    heatmap = tf.reduce_mean(last_conv_layer_output * tf.expand_dims(pooled_grads, axis=0), axis=-1)
    
    # Normalize the heatmap
    heatmap = tf.maximum(heatmap, 0) / tf.math.reduce_max(heatmap)
    
    return heatmap.numpy()
In [15]:
for i, image_id in enumerate(test_images):
    img_path = 'DataSet/Combined/' + image_id
    img = cv2.imread(img_path)
    img = cv2.resize(img, img_size)
    img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)  # Convert to RGB
    img = img / 255.0  # Normalize
    
    # Fetch the diagnosis for the current image
    diagnosis = df[df['image_id'] == image_id]['dx'].values[0]
    
    # Generate the GradCAM
    cam = gradcam(img, resnet_model, 'conv2d_621')
    
    # Display the original image, GradCAM, and heatmap with 'jet' colormap and colorbar
    plt.figure(figsize=(18, 6))
    
    # Original Image
    plt.subplot(1, 3, 1)
    plt.imshow(img)
    plt.title(f"Original Image ({diagnosis})")
    plt.axis('off')
    
    # GradCAM Result
    plt.subplot(1, 3, 2)
    plt.imshow(cam, cmap='jet')
    plt.title("GradCAM Result")
    plt.axis('off')
    
    # Heatmap Overlay
    plt.subplot(1, 3, 3)
    heatmap_plot = plt.imshow(cam, cmap='jet')
    plt.colorbar(heatmap_plot)
    plt.title("Heatmap with 'jet' Colormap and Colorbar")
    plt.axis('off')
    
    plt.show()
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image